const app = getApp(); 
var dateUtils = require('../../../utils/dateUtil.js');
import {
  getStaticImgUrl,
} from '../../../utils/api.config'
Page({

  /**
   * 页面的初始数据
   */
  data: {
   countPic:9,//上传图片最大数量
    imgDetailPics:[], //作业页面显示的图片
    showImgUrl: "", //路径拼接，一般上传返回的都是文件名，
    theacherImgDetailPics:[], //老师发布作业的图片
    uploadImgUrl:'',//图片的上传的路径
    modal:null,
    taskId:'',
    taskInfo:{},
 
    stuTaskConten:{},//打卡详情

   // dateString: "", //选中的日期
    spot: [],  //日期红点集合
    taskEndTime:'',//任务结束日期
    defaultTime:'',

    userInfo: {},
    stuIndex:0,

    // ifhavaTask:true,  //是否有跳绳任务
    // ifBuka:false,//是否补卡
    // ifTimeOutData:0,//是否超过当前时间 0没有 1当天 2大于 用于点击按钮toast提示
    // ifTaskOK:false,//是否已打卡，  true 打卡，false未打卡

    status:0,     
    //0 今日无跳绳任务  1、今日已打卡  2、今日未打卡  3、补卡  4、今日已打卡（补卡） 5、漏打卡  6、大于今天且有任务（立即打卡 不可点击） 7、重新打卡切无跳绳数据（刷新跳绳打卡 重新打卡）  8、跳绳完成（重新打卡 提交）
    //接口字段理解：finishTime，如果有记录但是这个字段为空就可以重新打卡，否则就不能打卡。
    //timeOut 是否超时 0 否 1 是
    //ruleTime是打卡时间 finishTime是完成时间。

    tempStatus:0,//临时记录打卡前的状态,用于重新打卡复位之前的状态（打卡与补卡）

    equipmentList: [], //设备记录
    studentTaskId:''

  },

    //监听组件事件，返回的结果
    myEventListener:function(e){
      console.log("上传的图片结果集合="+e.detail.picsList)
      this.setData({
        imgDetailPics:e.detail.picsList
      })
     },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    if(this.data.tsStatus == 8){
      wx.enableAlertBeforeUnload({
        message: "您的有跳绳任务未提交，请确定要返回吗？",
        success: function (res) {
            console.log("成功：", res);
        },
        fail: function (err) {
            console.log("失败：", err);
        },
    });
    }


    var taskId = this.options.taskId;
    this.setData({
      taskId:taskId,
      userInfo:wx.getStorageSync('userData'),
      stuIndex:wx.getStorageSync('stuIndex')

    })
    this.getTaskInfo()
    
  },

  
  dateChange(e) {
    var curData = dateUtils.formatTime(new Date());
    console.log("选中日期变了,现在日期是", e.detail.dateString+"  "+this.data.defaultTime)
     if(this.data.taskId){
       var isOkTime = false //点击是否为有任务的日期
       for(var i=0;i<this.data.spot.length;i++){
           if(this.data.spot[i] == e.detail.dateString){
             isOkTime = true
             break;
           }
       }
       if(isOkTime){
         this.queryStudentSkipRopeDayDetail(e.detail.dateString) 
       }else{
         this.setData({
           status:0,
           stuTaskConten:null 
         })
       }
     } 
   },
 //重新打卡按钮
 againToTask(){
    this.setData({
      status:this.data.tempStatus,
    })
    console.log("status=="+this.data.status);
 },

 //获取任务详情
 getTaskInfo(){
  wx.showLoading({
    title: '数据加载中...',
    icon: 'none',
  })
  app.api.stuTaskDetail(this.data.taskId).then(rest => {
    wx.hideLoading()
    if(rest&&rest.success){ 
      console.log(this.data.defaultTime+'==获取任务详情接口数据a='+JSON.stringify(rest));
      this.setData({
        taskInfo:rest.data,
        spot:rest.data.ruleTimes,
        taskEndTime:rest.data.ruleTimes[rest.data.ruleTimes.length-1],
        imgDetailPics:rest.data.images,
      })
     
      //判断今天是否有任务打卡
      var date = dateUtils.formatTime(new Date());
      var ifOk = false
      for(var i=0;i<this.data.spot.length;i++){
        if(date === this.data.spot[i]){
          ifOk = true;
          break;
        }
      }
      console.log(ifOk+'==setDefaultTime接口数据比较='+date);
      if(ifOk){
        this.selectComponent("#calendarbg").setDefaultTime(date)
        this.queryStudentSkipRopeDayDetail(date)
      }else{
        this.setData({
          status:0,
          stuTaskConten:null
         })
         //当前时间再结束日期之前，定位到当前时间
        if(dateUtils.compareTime(date,this.data.taskEndTime)){
          this.selectComponent("#calendarbg").setDefaultTime(date)
        }else{
          //当前日期在任务结束时间只后，定位到结束日志
          this.selectComponent("#calendarbg").setDefaultTime(this.data.taskEndTime)
        }
      }
    }else{
      console.log('接口数据=='+rest.errMsg)
      wx.showToast({
        title: rest.errMsg||'网络异常，请稍后重试！！',
        icon: 'none',
        duration: 2000,
        mask:true
      })
    }
  })
  .catch(r => {
    wx.hideLoading()
    console.error(r)
    wx.showToast({
      title: '网络异常，请稍后重试！',
      icon: 'none',
      duration: 2000,
      mask:true
    })
  })
},
//刷新打卡
refulshData(){
  this.queryStudentSkipRopeDayDetail(this.data.defaultTime)

  // var data = { 
  //   taskId:this.data.taskId, 
  //   finishTime:this.data.defaultTime, 
  //   studentId:this.data.userInfo.list[this.data.stuIndex].studentId
  // } 
  // console.log("查询任务当日打卡详情参数="+JSON.stringify(data)); 
  // wx.showLoading({ 
  //   title: '数据加载中...', 
  //   icon: 'none', 
  // }) 
  // var that = this; 
  // app.api.queryStudentSkipRopeDayDetail(data).then(rest => { 
  //   wx.hideLoading() 
  //   this.setData({ 
  //     isLoading:false 
  //   }) 
  //   if(rest&&rest.success){    
  //     console.log('重新打卡查询任务当日打卡详情列表数据2='+JSON.stringify(rest)) 
      
  //     if(rest.data && rest.data.quantity >= 0){
  //       console.log('更新了跳绳次数='+rest.data.quantity)
  //       that.setData({
  //         stuTaskConten:rest.data,
  //       })
  //     }
      
  //   }else{ 
  //     wx.showToast({ 
  //       title: rest.errMsg||'网络异常,请重试！', 
  //       icon: 'none', 
  //       duration: 2000, 
  //       mask:true 
  //     }) 
  //   } 
  // }) 
  // .catch(r => { 
  //   console.error(r) 
  //   wx.showToast({ 
  //     title: '网络异常,请重试！', 
  //     icon: 'none', 
  //     duration: 2000, 
  //     mask:true 
  //   }) 
  // }) 
},

//提交跳绳
endTaskRopeReq(){
  
  var data = { 
   
    duration: this.data.stuTaskConten.duration,
    beginTime: this.data.stuTaskConten.beginTime,
    endTime: this.data.stuTaskConten.endTime,
    equipmentId: this.data.stuTaskConten.equipmentId,
    // frequency: this.data.stuTaskConten.beginTime,
    // kcal: this.data.stuTaskConten.beginTime,
    model: this.data.stuTaskConten.model,
    quantity: this.data.stuTaskConten.quantity,
    ruleTime: this.data.stuTaskConten.ruleTime,
    taskId:this.data.taskId, 
    // finishTime:this.data.defaultTime, 
    // studentId:this.data.userInfo.list[this.data.stuIndex].studentId
  } 
  console.log("提交跳绳参数="+JSON.stringify(data)); 
  wx.showLoading({ 
    title: '数据加载中...', 
    icon: 'none', 
  }) 
  var that = this; 
  app.api.endTaskRopeReq(data).then(rest => { 
    wx.hideLoading() 
    this.setData({ 
      isLoading:false 
    }) 
    if(rest&&rest.success){    
      console.log('提交跳绳结果='+JSON.stringify(rest)) 
      that.setData({
        status:1,
      })
      that.queryStudentSkipRopeDayDetail(that.data.defaultTime)
    }else{ 
      wx.showToast({ 
        title: rest.errMsg||'网络异常,请重试！', 
        icon: 'none', 
        duration: 2000, 
        mask:true 
      }) 
    } 
  }) 
  .catch(r => { 
    console.error(r) 
    wx.showToast({ 
      title: '网络异常,请重试！', 
      icon: 'none', 
      duration: 2000, 
      mask:true 
    }) 
  }) 
},

  //查询任务当日打卡详情
  queryStudentSkipRopeDayDetail(curTime){ 
    this.setData({
      defaultTime:curTime
    })
    var data = { 
      taskId:this.data.taskId, 
      finishTime:curTime, 
      studentId:this.data.userInfo.list[this.data.stuIndex].studentId
    } 
    console.log("查询任务当日打卡详情参数="+JSON.stringify(data)); 
    wx.showLoading({ 
      title: '数据加载中...', 
      icon: 'none', 
    }) 
    var that = this; 
    app.api.queryStudentSkipRopeDayDetail(data).then(rest => { 
      wx.hideLoading() 
      this.setData({ 
        isLoading:false 
      }) 
      if(rest&&rest.success){    
        console.log('查询任务当日打卡详情列表数据2='+JSON.stringify(rest)) 
        that.setData({
          stuTaskConten:rest.data,
        })
        if(rest.data !=null){
          that.setData({
            studentTaskId:rest.data.studentTaskId
          })
        }

        var tsStatus = -1
        //0 今日无跳绳任务  1、今日已打卡  2、今日未打卡  3、补卡  4、今日已打卡（补卡） 5、漏打卡  6、大于今天且有任务（立即打卡 不可点击） 7、重新打卡切无跳绳数据（刷新跳绳打卡 重新打卡）  8、跳绳完成（重新打卡 提交）9、重新打卡切无跳绳数据（刷新跳绳打卡 重新打卡）

        //已打卡
        if(rest.data !=null && rest.data.finishTime!=null){
           //是否补卡 0 否 1是
           if(rest.data.timeOut == 0){
            console.log('打卡状态 1、今日已打卡 1') 
            tsStatus = 1
          }else{
            console.log('打卡状态 4、今日已打卡（补卡）') 
            tsStatus = 4
          }
        }else{
             //任务是否结束
             //0 开始时间小于结束时间 1 相等 2 开始时间大于结束时间
             var dataCurTime = dateUtils.compareTimeIsOk(curTime,dateUtils.formatTime(new Date()))
             var dataEndTime = dateUtils.compareTimeIsOk(dateUtils.formatTime(new Date()),that.data.taskEndTime)
             console.log('打卡状态时间dataEndTime='+dataEndTime+' 任务结束时间='+that.data.taskEndTime+'=curTime='+curTime+'=dataCurTime='+dataCurTime) 
             //任务已结束
             if(dataEndTime == 2){
                wx.showToast({ 
                  title: '当前任务已结束', 
                  icon: 'none', 
                  duration: 1500, 
                  mask:true 
                }) 
                tsStatus = 5
             }else if(dataCurTime==2){ //任务未开始
               console.log('打卡状态 大于今天且有任务（立即打卡 不可点击）11') 
               tsStatus = 6
             }else if(dataCurTime==0){ //任务已经过期
                    if(that.data.taskInfo.afterClock == 1){
                      if(rest.data !=null && rest.data.quantity>0){
                        tsStatus = 8
                        console.log('打卡状态 8、---已经有跳绳数据') 
                        that.setData({
                          tempStatus:2
                        })
                       
                      }else if(rest.data !=null){
                        tsStatus = 9
                        console.log('打卡状态 8、已经有跳绳数据') 
                        that.setData({
                          tempStatus:3
                        })
                      }else{
                        tsStatus = 3
                        that.setData({
                          tempStatus:3
                        })
                        console.log('打卡状态 补卡 3') 
                      }
                    }else{
                      wx.showToast({ 
                        title: '当前任务不可补交', 
                        icon: 'none', 
                        duration: 1500, 
                        mask:true 
                      }) 
                      console.log('打卡状态 任务已结束3') 
                      tsStatus = 5
                    }
              }else{
              
                if(rest.data != null && rest.data.quantity>0){
                  tsStatus = 8
                  console.log('打卡状态 8、---已经有跳绳数据') 
                  that.setData({
                    tempStatus:2
                  })
                }else{
                  console.log('打卡状态 8、已经有跳绳数据==='+that.data.status) 

                  if(rest.data !=null){
                    tsStatus = 7
                    console.log('打卡状态 8、已经有跳绳数据') 
                    that.setData({
                      tempStatus:2
                    })
                  }else{
                    if(that.data.status != 7){
                      tsStatus = 2
                      console.log('打卡状态 2、今日未打卡 2') 
                      that.setData({
                        tempStatus:2
                      })
                    }
                  }
                }
              }
        }

        if(tsStatus!= -1){
          that.setData({
            status:tsStatus,
          })
          console.log('打卡状态='+that.data.status) 
        }
        
      }else{ 
        wx.showToast({ 
          title: rest.errMsg||'网络异常,请重试！', 
          icon: 'none', 
          duration: 2000, 
          mask:true 
        }) 
      } 
    }) 
    .catch(r => { 
      console.error(r) 
      wx.showToast({ 
        title: '网络异常,请重试！', 
        icon: 'none', 
        duration: 2000, 
        mask:true 
      }) 
    }) 
  }, 


  toTask(){
    if(this.data.status == 2 || this.data.status == 3){
      this.getMineJumList()
    }
  },

  //获取跳绳个数与跳绳状态
  getMineJumList() {
    wx.showLoading({
      title: '加载中...',
      icon: 'none',
    })
    app.api.mySkipRope(this.data.userInfo.list[this.data.stuIndex].studentId).then(rest => {
        wx.hideLoading()

        if (rest && rest.success) {
          var list = rest.data
          console.log('获取转换后数据', JSON.stringify(list))
          wx.setStorageSync('mineJumList', list);
          this.setData({
            equipmentList: list
          })
          this.startJump(list)
        } else {
          wx.showToast({
            title: rest.errMsg || '网络异常，请稍后重试！！',
            icon: 'none',
            duration: 2000,
            mask: true
          })
        }
      })
      .catch(r => {
        console.error(r)
        wx.showToast({
          title: '网络异常，请稍后重试！',
          icon: 'none',
          duration: 2000,
          mask: true
        })
      })

  },



  //开始练习跳绳
  startJump(equipmentList) {
    //不能用本地保存的数据，需要及时获取，需要根据不同的在线状态做对应提示 
    //var equipmentList = wx.getStorageSync('mineJumList');
    var that = this;
    var muList = []
    for (var i = 0; i < equipmentList.length; i++) {
      var item = equipmentList[i]
      muList.push(item.name)
    }
    //一根跳绳直接开始
    if(muList.length>1){
      this.selectComponent("#modal").showModal({
        title: '跳绳选择',
        modalType: 3,
        contentList: muList,
        selectContentIndex: this.data.selectContentIndex,
        topImageUrl: getStaticImgUrl('/new/alert_result.png'),
        complete: (res) => {
          if (res.cancel) {}
          if (res.confirm) {
            var index = res.data.showData.selectContentIndex
            this.setData({
              selectContentIndex: index
            })
            var item = equipmentList[index]
            that.subMitStartJump(item.equipmentId)
  
          }
        }
      })
    }else if(muList.length == 1){
      that.subMitStartJump(equipmentList[0].equipmentId)
    }else{
      wx.showToast({
        title: '请选绑定智能跳绳',
        icon: 'none',
        duration: 1500,
        mask: true
      })
    }
  },

  //提交开始跳绳
  subMitStartJump(equipmentId) {
    
    var data = {
      equipmentId: equipmentId,
      ruleTime:this.data.defaultTime,
      taskId:this.data.taskId
    }
    // wx.showLoading({
    //   title: '提交中...',
    // })
    console.log('跳绳提交subMitStartJump数据=', JSON.stringify(data))
    app.api.addTaskRopeReq(data).then(rest => {
        //wx.hideLoading()
        if (rest && rest.success) {
          console.log('跳绳成功', JSON.stringify(rest))
          this.setData({
            status:7,
            studentTaskId:rest.data
          })
          this.mqttSkipMode(this.data.studentTaskId) 
        } else {
          console.log('跳绳失败', JSON.stringify(rest))
        }
      })
      .catch(r => {
        wx.hideLoading()
        console.error(r)
        wx.showToast({
          title: '网络异常，请稍后重试！',
          icon: 'none',
          duration: 2000,
          mask: true
        })
      })
  },
  //给跳绳推送信息
  mqttSkipMode(studentTaskId) {
    //1: 1分钟倒计时跳绳 ; 
    //2:200个倒计数跳绳 ;
    //3:自由跳绳； 
    //12 2分钟倒计时跳绳 ; 
    //13 3分钟倒计时跳绳 ;
    var data = {
      skipmode: this.data.taskInfo.subType==11?1:this.data.taskInfo.subType,
      taskId: studentTaskId 
    }
    wx.showLoading({
      title: '提交中...',
    })
    let that = this;
    console.log('跳绳提交mqttSkipMode数据=', JSON.stringify(data))
    app.api.skipMode(data).then(rest => {
        wx.hideLoading()
        if (rest && rest.success) {
          console.log('跳绳MQTT成功', JSON.stringify(rest))
          that.setData({
            status:7
          })
        } else {
          console.log('跳绳MQTT失败', JSON.stringify(rest))
        }
      })
      .catch(r => {
        wx.hideLoading()
        console.error(r)
        wx.showToast({
          title: '网络异常，请稍后重试！',
          icon: 'none',
          duration: 2000,
          mask: true
        })
      })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    this.modal = this.selectComponent("#modal")
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})